
Ext.onReady(function()
{
    // HANDLE RENDER
        var h_render_check = function(val, meta, rec, ri, rc, s) {
            if (val==true)
                return '<input id="editar'+rec.get('idFuncionalidad')+'" type="checkbox" checked />';
            else
                return '<input id="editar'+rec.get('idFuncionalidad')+'" type="checkbox" />';
        }

    // HANDLER AJAX
        var h_editar_success = function(obj){
            X.reload('listGrid');
            X.hide('editWindow');
        }
        var h_editar_failure = function(obj){
            X.focus('editNombrePerfil');
        }

    // HANDLE CHECK
        var h_empty_nombre = function()  { X.focus('editNombrePerfil'); }

    // STORE
    X.store({
        id     : 'editStore',
        fields : [
            'idFuncionalidad',
            'nombre',
            'habilitado'
        ]
    });

    // GRID
    X.grid.panel({
        id       : 'editGrid',
        height   : 400,
        width    : 300,
        storeId  : 'editStore',
        disableSelection :true,
        x:70,y:46,
        style:'border-with:2px;border-style:solid;',
        hideHeaders:true,

        columns:[
            X.grid.text({dataIndex: 'habilitado', width: 30,renderer:h_render_check}),
            X.grid.text({dataIndex: 'nombre', width: 250})
        ]
    });

    // FORM
    X.form.panel({
        title:'Editar Perfil',
        id : 'editForm',
        height:530,
        width:400,
        items:[
            X.form.label ({x:10,  y:16,  text:'Nombre:'  }),
            X.form.label ({x:10,  y:46,  text:'Permisos:'}),
            X.form.hidden({                         id:'editCodigoPerfil'}),
            X.form.text  ({x:70,  y:10,  width:300, id:'editNombrePerfil', maxlen:64}),
            X.form.button({x:70,  y:460, width:80,  id:'editEditar',   text:'Editar'   }),
            X.form.button({x:170, y:460, width:80,  id:'editCancelar', text:'Cancelar'}),
            X.get('editGrid')
        ]
    });

    // EVENT
        X.event.button('editEditar', function(){
            if (X.isempty('editNombrePerfil'))
                X.msg.failure('Complete el campo "Nombre".', h_empty_nombre);
            else{
                // obtener los ids de las funcionalidades marcadas
                var s = X.get('editStore');
                var a = new Array();
                for (var i=0; i<s.getCount(); i++){
                    var codigo = s.getAt(i).get('idFuncionalidad');
                    if (document.getElementById('editar'+codigo).checked)
                        a.push(codigo);
                }
                X.ajax({
                    url:'/perfil/ajax-editar',
                    targetId:'editWindow',
                    params:{
                        codigoPerfil : X.value('editCodigoPerfil'),
                        nombrePerfil : X.value('editNombrePerfil'),
                        ids: Ext.encode(a)
                    },
                    afterSuccess:h_editar_success,
                    afterFailure:h_editar_failure
                });
            }
        });
        X.event.button('editCancelar', function(){
            X.hide('editWindow');
        });

    // WINDOW
    X.win.panel({
        id            : 'editWindow',
        defaultButton : 'editNombrePerfil',
        items         : X.get('editForm')
    });

    X.get('editWindow').begin = function(){
        // el if para asegurar abrir una sola ventana (aunque sea modal)
        if (X.get('editWindow').isVisible()==false){
            X.show('editWindow');
        }
    }
});